package co.com.inventarios.logica;

import java.util.List;

import co.com.inventarios.modelo.Unimed;
import co.com.inventarios.modelo.Vinculado;
import co.com.inventarios.modelo.VinculadoWork;
import co.com.inventarios.persistencia.EntityManagerHelper;
import co.com.inventarios.persistencia.IVinculadoDAO;
import co.com.inventarios.persistencia.QueryUnimedDAO;
import co.com.inventarios.persistencia.QueryVinculadoDAO;
import co.com.inventarios.persistencia.VinculadoDAO;

public class VinculadoLogica implements IVinculadoLogica{

	    Vinculado miVinculado = new Vinculado();
		IVinculadoDAO lDAO = new VinculadoDAO(); 

		public void grabarVinculado(String codigo, String nombre, Long activo)
				throws Exception {

			miVinculado.setVincedula(codigo);
			miVinculado.setVinnombre(nombre);
			miVinculado.setVinactivo(activo);

			try {
				EntityManagerHelper.getEntityManager().getTransaction().begin();
				lDAO.save(miVinculado);
				EntityManagerHelper.getEntityManager().getTransaction().commit();
			} catch (Exception ex) {
				ex.printStackTrace();
				EntityManagerHelper.getEntityManager().getTransaction().rollback();
			}

		}

		public List<Vinculado> buscarTodosVinculado() throws Exception {
			return new VinculadoDAO().findAll();
			// TODO Auto-generated method stub
		}

		public List<Vinculado> consultarVinculado(String propiedad, String valor)
				throws Exception {
			return new VinculadoDAO().findByProperty(propiedad, valor);
		}

		public void eliminarVinculado(String codigo) throws Exception {
			miVinculado.setVincedula(codigo);

			try {
				EntityManagerHelper.getEntityManager().getTransaction().begin();
				lDAO.delete(miVinculado);
				EntityManagerHelper.getEntityManager().getTransaction().commit();
			} catch (Exception ex) {
				ex.printStackTrace();
				EntityManagerHelper.getEntityManager().getTransaction().rollback();
			}

		}

		public Vinculado consultarRegVinculado(String valor) throws Exception {
			return new VinculadoDAO().findById(valor);
		}

		public VinculadoWork[] findVinculadoSelectedRow(List<Vinculado> lista)
				throws Exception {
			VinculadoWork doc;
			int max = lista.size();
			VinculadoWork[] arrayDoc = new VinculadoWork[max];
			if (lista != null) {
				for (int i = 0; i < max; i++) {
					doc = new VinculadoWork();
					doc.setVinculadow(lista.get(i));
					arrayDoc[i] = doc;
				}
			}
			return arrayDoc;
		}

		public List<Vinculado> findAll(String expresion) throws Exception {
			return new QueryVinculadoDAO().findBy_all(expresion);
		}

		public List<Vinculado> findByPropertyAll(String propiedad, String valor,String expresion)
				throws Exception {
			return new QueryVinculadoDAO().findByPropertyAll(propiedad, valor,expresion);
		}

		public void Eliminar_Vinculado(Vinculado reg) throws Exception {
			try {
				EntityManagerHelper.getEntityManager().getTransaction().begin();
				new VinculadoDAO().delete(reg);
				EntityManagerHelper.getEntityManager().getTransaction().commit();
			} catch (Exception ex) {
				ex.printStackTrace();
				EntityManagerHelper.getEntityManager().getTransaction().rollback();
			}

		}
		
		public void Guarda_Vinculado(Vinculado reg) throws Exception { 
			try {
				EntityManagerHelper.getEntityManager().getTransaction().begin();
				new VinculadoDAO().save(reg);
				EntityManagerHelper.getEntityManager().getTransaction().commit();
			} catch (Exception ex) {
				ex.printStackTrace();
				EntityManagerHelper.getEntityManager().getTransaction().rollback();
			}

		}
		
		public void Modifica_Vinculado(Vinculado reg) throws Exception {
			try {
				EntityManagerHelper.getEntityManager().getTransaction().begin();
				new VinculadoDAO().update(reg);
				EntityManagerHelper.getEntityManager().getTransaction().commit();
			} catch (Exception ex) {
				ex.printStackTrace();
				EntityManagerHelper.getEntityManager().getTransaction().rollback();
			}

		}

		public Vinculado findByPropertyActivo(String propiedad,
				String valor) throws Exception {
			return new QueryVinculadoDAO().findByPropertyActivo(propiedad, valor);
		}

		public List<Vinculado> findByPropertyActivoLista(String propiedad) throws Exception {
			return new QueryVinculadoDAO().findByPropertyActivoLista(propiedad);
		}
}
